home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-03 | 614 b | 31 lines | [TEXT/PJMM] |
- unit CRC;
-
- interface
-
- function CRC16 (data: Ptr; length: Size): Integer;
-
- implementation
-
- function CRC16 (dataPtr: Ptr; dataLength: Size): Integer;
- type
- SignedBytePtr = ^SignedByte;
- var
- result, i, j: Integer;
- aByte: SignedByte;
- begin
- result := 0;
- for i := 1 to dataLength do
- begin
- aByte := SignedBytePtr(dataPtr)^;
- data := Ptr(ORD(dataPtr) + SIZEOF(SignedByte));
- result := BXOR(result, BSL(aByte, 8));
- for j := 1 to 8 do
- if BTST(result, 15) then
- result := BXOR(BSL(result, 1), $1021)
- else
- result := BSL(result, 1);
- end;
- CRC16 := result;
- end;
-
- end.